// 增删改查的请求地址
const urlPrefix = "/zjfBaseServerInfo"
const urlAdd = urlPrefix+"/add";
const urlDel = urlPrefix+"/delete";
const urlEdit = urlPrefix+"/update";
const urlQuery = urlPrefix+"/list";

const urlExport = urlPrefix+"/export";
const urlDropdownVersion = "/zjfUserModuleVersion/list";
const urlDropdownKey = "/zjfPubKey/list";
const param = {"PAGE_CAPACITY": 1000, "PAGE_OFFSET": 0, "SORT_TYPE": "asc"};
let keyList = [];
customerClickToSelect = false;
const columns =
    [{
        checkbox: true
    }, {
        field: 'ID',
        title: 'ID',
        align: 'center'
    }, {
        field: 'NAME',
        title: '名称',
        align: 'center',
        editable: {
            type: 'text',
            title: '名称',
            validate: function (value) {
                if ($.trim(value) === '') {
                    return '名称不能为空!';
                }
            }
        }
    }, {
        field: 'HOST',
        title: 'IP',
        align: 'center',
        editable: {
            disabled:true,
            type: 'text',
            title: 'IP',
            validate: function (value) {
                if ($.trim(value) === '') {
                    return 'IP不能为空!';
                }
            }
        }
    }, {
        field: 'PORT',
        title: '端口',
        align: 'center',
        editable: {
            disabled:true,
            type: 'text',
            title: '端口',
            validate: function (v) {
                if (!v) return '端口不能为空';
            }
        }
    }, {
        field: 'USER',
        title: '用户名',
        align: 'center',
        editable: {
            type: 'text',
            title: '用户名',
            validate: function (v) {
                if (!v) return '用户名不能为空';
            }
        }
    }, {
        field: 'CONNWAY',
        title: '连接方式',
        align: 'center',
        editable: {
            type: 'select',
            title: '连接方式',
            source:function () {
                return [{ value: 0, text: "密码"},{ value: 1, text: "公钥"}];
            }
        }
    }, {
        field: 'PASS',
        title: '密码',
        align: 'center',
        visible: false,
        editable: {
            type: 'text',
            title: '密码',
            validate: function (v) {
                if (!v) return '密码不能为空';
            }
        },
        formatter: function(value, item, index) {
            console.log(value)
            if (value === null || value === undefined) {
                return "-";
            }
            return value;
        }
    }, {
        field: 'KEY',
        title: '公钥',
        align: 'center',
        editable: {
            type: 'select',
            title: '公钥',
            source:function () {
                // 如果已经加载过了 那就不加载了
                if (keyList.length > 0) {
                    return keyList;
                }
                initDropdownKey();
                return keyList;
            },
            emptytext : "-",//数据为空时显示 ✔️
            // emptytext: function (value, row, index) {
            //     console.log("emptytext------");
            //     console.log(value);
            //     console.log(row);
            //     console.log(index);
            //     return value;
            // }
        },
        formatter: function(value, item, index) {
            console.log(value)
            if (value === null || value === undefined) {
                return "-";
            }
            // if (value.length >= 10) {
            //     value = value.substr(0, 10) + "...";
            // }
            return value;
        }
    },{
        field: 'CREATETIME',
        title: '创建时间',
        align: 'center',
        visible: false
    }, {
        field: 'UPDATETIME',
        title: '更新时间',
        align: 'center',
        visible: false
    },  {
        field: 'OPERATOR',
        title: '操作员',
        align: 'center',
        visible: false
    }, {
        field: 'DESC',
        title: '描述',
        align: 'center',
        switchable: true,
        editable: {
            type: 'text',
            title: '描述',
            validate: function (v) {
                if (!v) return '描述不能为空';
            }
        }
    }

    ];

// 在初始化表格之前
function beforeInitTable() {
    // showUser();
    // showList();

    // 初始化的时候 先清空一次
    hideAttachedUser();
    showAttachedKey();

    //刚加载进来,显示密码 隐藏key
    // hideKeyShowPass();

    //0.加载表格内的下拉框
    initDropdownKey();

    $("#m_server").addClass("active");
}

//加载表格内的下拉框-同步
function initDropdownKey() {
    ajax(urlDropdownKey,param,true,3)
}

// 加载公钥下拉列表
function showAttachedKey() {
    ajax(urlDropdownKey,param,true,4)
}

function hideAttachedUser() {
    // 把用户名添加到隐藏的input中,操作员
    let user = auth_user;
    $("#add input[name=operator]").val(user.USER);
}
function add(param) {
    ajax(urlAdd, param, true,1);
}
// 隐藏key选项,显示密码选项
function hideKey(ipt) {
    // 先删除 name是way的input框的checked自定义属性
    $("#add input[name=way]").removeAttr("checked")
    // 再添加一个
    $(ipt).attr("checked","checked")

    $("#add .key").addClass("hide");
    $("#add .key").removeClass("required");
    $("#add .pass").removeClass("hide");
    $("#add .pass").addClass("required");
}
// 隐藏密码选项,显示key选项
function hidePass(ipt) {
    // 先删除 name是way的input框的checked自定义属性
    $("#add input[name=way]").removeAttr("checked")
    // 再添加一个
    $(ipt).attr("checked","checked")

    $("#add .pass").addClass("hide");
    $("#add .pass").removeClass("required");
    $("#add .key").removeClass("hide");
    $("#add .key").addClass("required");
}
function defaultSet() {
    // $("#add input[name='port']").val(22);
    // $("#add input[name='user']").val("root");
    hideAttachedUser();
}

// 删除数据 发送请求
function delRecord(rows) {
    // 映射出ID array
    let ids = rows.map(r => {
        return r.ID
    })
    let param = {}
    param["IDS"] = ids;
    // 同步删除数据,然后刷新列表
    ajax(urlDel, param, false,2)
    // 默默的刷新表格
    // silenceRefresh("list");
}
function getCustomerParam() {

}
function customerInitBtn() {
    $("#btn_delete").removeClass("hidden");

    $("#btn_export").click(function () {
        let rows = $('#list').bootstrapTable('getSelections');
        // 如果没有选中数据
        if (rows.length < 1) {
            console.log("没有选中指定数据,导出所有数据")
        }
        let ids = rows.map(r => {
            return r.ID
        })
        let param = {}
        param["IDS"] = ids;
        param["EXPORT_TYPE"] = "JSON";

        ajax(urlExport, param, true, 5);
    });
    $("#btn_export").removeClass("hidden");

}

function customer_sheet_name() {
    return "服务器配置";
}